package it.unibo.iss.domotica.testcommon;


import it.unibo.iss.domotica.DomoticDomain;
import it.unibo.iss.domotica.edDomain.CatConsumptionEnum;
import it.unibo.iss.domotica.edDomain.CatUsage;
import it.unibo.iss.domotica.edDomain.Elettrodomestico;
import it.unibo.iss.domotica.edDomain.IImpiantoElettrico;
import it.unibo.iss.domotica.edDomain.ImpiantoElettrico;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

import junit.framework.TestCase;

import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;


public class TestCommon extends TestCase {

	protected IImpiantoElettrico elettrodomestici;
	protected Properties prop;
	String propertiesPath = "G:\\Documenti\\Universita\\Magistrale\\Ingegneria dei Sistemi Software M\\workspace\\domotica.scontrol\\src\\system.properties";
	// Logger
	protected static final Logger logger = Logger.getLogger("DomoticaTest");
	
	@Before
	public void setUp() throws Exception {
		
		//*** System properties ***//
		prop = new Properties();
		try {
			prop.load(new FileInputStream(propertiesPath));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		//*** ImpiantoElettrico ***//
		elettrodomestici = ImpiantoElettrico.getInstance();
		createElettrodomestici();
	}

	@After
	public void tearDown() throws Exception {
		logger.info("Cleaning elettrodomestici...");
		elettrodomestici.clear();
	}

	private void createElettrodomestici() {
		DomoticDomain domain = new DomoticDomain();
		elettrodomestici.setElettrodomestici(domain.createAppliances());
		
//		// Elettrodomestici Indispensabili Consumo Basso
//		for(int i = 0 ; i < 3 ; i++) {
//			String edName = "edIB" + i;
//			Elettrodomestico ed = new Elettrodomestico(edName, CatUsage.ESSENTIAL, CatConsumptionEnum.LOW, prop);
//			logger.info("Putting " + edName + "...");
//			elettrodomestici.addED(edName, ed);
//		}
//		
//		// Elettrodomestici Superflui Consumo Basso
//		for(int i = 0 ; i < 3 ; i++) {
//			String edName = "edSB" + i;
//			Elettrodomestico ed = new Elettrodomestico(edName, CatUsage.OPTIONAL, CatConsumptionEnum.LOW, prop);
//			logger.info("Putting " + edName + "...");
//			elettrodomestici.addED(edName, ed);
//		}
//		
//		// Elettrodomestici Indispensabili Consumo Medio
//		for(int i = 0 ; i < 3 ; i++) {
//			String edName = "edIM" + i;
//			Elettrodomestico ed = new Elettrodomestico(edName, CatUsage.ESSENTIAL, CatConsumptionEnum.MEDIUM, prop);
//			logger.info("Putting " + edName + "...");
//			elettrodomestici.addED(edName, ed);
//		}
//		
//		// Elettrodomestici Superflui Consumo Medio
//		for(int i = 0 ; i < 3 ; i++) {
//			String edName = "edSM" + i;
//			Elettrodomestico ed = new Elettrodomestico(edName, CatUsage.OPTIONAL, CatConsumptionEnum.MEDIUM, prop);
//			logger.info("Putting " + edName + "...");
//			elettrodomestici.addED(edName, ed);
//		}
//		
//		// Elettrodomestici Indispensabili Consumo Alto
//		for(int i = 0 ; i < 3 ; i++) {
//			String edName = "edIA" + i;
//			Elettrodomestico ed = new Elettrodomestico(edName, CatUsage.ESSENTIAL, CatConsumptionEnum.HIGH, prop);
//			logger.info("Putting " + edName + "...");
//			elettrodomestici.addED(edName, ed);
//		}
//		
//		// Elettrodomestici Superflui Consumo Alto
//		for(int i = 0 ; i < 3 ; i++) {
//			String edName = "edSA" + i;
//			Elettrodomestico ed = new Elettrodomestico(edName, CatUsage.OPTIONAL, CatConsumptionEnum.HIGH, prop);
//			logger.info("Putting " + edName + "...");
//			elettrodomestici.addED(edName, ed);
//		}
	}

}
